const express = require('express');
const router = express.Router();
const db = require('../../db/index.js');
const multer = require('multer');
const fs = require('fs');
const path = require('path');
const storage = multer.diskStorage({
  destination: path.join(__dirname, '../../static/admin/uploads'),
  filename: function (req, file, cb) {
    var type = file.originalname.split('.')[1];
    cb(null, `${file.fieldname}-${Date.now().toString()}.${type}`);
  },
});
const upload = multer({ storage });
// 首页管理中的轮播图管理
router.get('/', (req, res) => {
  res.render('admin/slideshow');
});
// 动态渲染数据表格
// TODO:去深度理解一下
router.get('/list', (req, res) => {
  let isSearch = req.query.search ? req.query.search : '';
  var count;
  const sqlCount = `select count(*) as count from banner  where banner_name like "%${isSearch}%"`;
  db.query(sqlCount, (err, result) => {
    if (err) {
      //
      return err.message;
    }
    // console.log(result); //[ { count: 12 } ]
    // console.log(result[0].count);//12
    count = result[0].count;
  });
  const { page, limit } = req.query;
  var offset = (page - 1) * limit;
  // 考虑查询模块
  // console.log(req.query);
  // 判断发来请求的参数中没有有关键字
  // let isSearch = req.query.antistop ? req.query.antistop : '';
  var sql = `SELECT * FROM banner WHERE banner_name LIKE '%${isSearch}%' limit ${offset},${limit}`;
  // var sql = `select * from banner`;
  db.query(sql, (err, results) => {
    // console.log(results);
    // 在这里因为要返回表格渲染  需要按照layui的请求参数来
    if (err) return res.send({ code: 1, msg: err.message });
    if (results.length != 0) {
      // 查询到了数据
      return res.send({ code: '0', msg: '查询成功', data: results, count: count });
    } else {
      return res.send({ code: 1, msg: '查询失败' });
    }
  });
});
// 上传文件
router.post('/upload', upload.single('file'), (req, res) => {
  res.send({
    code: 1,
    url: '/admin/uploads/' + req.file.filename,
  });
});
// TODO:批量删除
router.get('/deletecheck', (req, res) => {
  var { ids } = req.query;

  // console.log(ids);
  var idArr = ids.split(',');
  var sql = `DELETE FROM banner WHERE banner_id in (${idArr})`;
  db.query(sql, (err, results) => {
    if (err) {
      return res.send({ code: 0, msg: err.message });
    }
  });
  // console.log(idArr);
  // idArr.forEach(id => {
  //   // console.log(id);
  //   var sql = `DELETE FROM product_classification WHERE pc_id=${id}`;
  //   db.query(sql, (err, results) => {
  //     if (err) {
  //       return res.send({ code: 0, msg: err.message });
  //     }
  //     // 产品分类  没有图片！！！！！
  //     // if (results.affectedRows == 1) {
  //     //   // 影响行数等于一行  数据库删除了  然后去删除图片
  //     //   fs.unlink(img_url, err => {
  //     //     if (err) return res.send({ code: 0, msg: '多图删除失败' });
  //     //   });
  //     // }
  //   });
  // });
  res.send({ code: 1, msg: '删除成功' });
});
// 插入轮播图
router.post('/insert', (req, res) => {
  // console.log(req.body);
  var { banner_name, banner_sort, banner_img, banner_show } = req.body;
  banner_show = banner_show ? banner_show : '0';
  // console.log(banner_show);
  // 在数据库中查重
  var check_sql = `select * from banner where banner_name = '${banner_name}'`;
  db.query(check_sql, (err, results) => {
    if (err) {
      return res.send({ code: 0, msg: '查询数据库错误' });
    }
    if (results.length != 0) {
      return res.send({ code: 0, msg: '轮播图名称重复，请更改' });
    } else {
      var sql = `INSERT INTO banner(banner_name,banner_sort,banner_img,banner_show) VALUES(?,?,?,?)`;
      db.query(sql, [banner_name, banner_sort, banner_img, banner_show], (err, results) => {
        if (err) return res.send({ code: 1, msg: err.message });
        // 数据库操作发生错误
        if (results.affectedRows == 1) {
          // 受影响行数为1
          return res.send({
            code: 0,
            msg: '插入成功',
          });
        } else {
          return res.send({
            code: 1,
            msg: '插入失败',
          });
        }
      });
    }
  });
});
// 查询模块
/* router.get('/query', (req, res) => {
  res.send('查询');
  // console.log(req.query); //{ antistop: '人' }
  var sql = `select * from `;
}); */
// router.post
// 删除轮播图
router.get('/delete', (req, res) => {
  // console.log(req.query);
  var { id, img } = req.query;
  // 1.删除数据库  2.删除服务器存储的图片
  var sql = `DELETE FROM banner WHERE banner_id=${id}`;
  // console.log(img);
  db.query(sql, (err, results) => {
    if (err) {
      return res.send({
        code: 0,
        msg: err.message,
      });
    }
    if (results.affectedRows == 1) {
      // 影响了一行  说明数据库删除成功
      // 删除服务器存储的图片
      // TODO:
      fs.unlink(path.join(__dirname, '../../static', img), err => {
        if (err) {
          // 文件删除失败
          return res.send({ code: 0, msg: `文件删除失败 ${err.message}` });
        } else {
          // 数据库删除成功 文件删除成功 删除成功
          return res.send({ code: 1, msg: '删除成功' });
        }
      });
    } else {
      return res.send({
        code: 0,
        msg: '删除失败',
      });
    }
  });
});
// 更新排序表单
router.get('/update', (req, res) => {
  // console.log(req.query);
  var sql = `UPDATE banner SET banner_sort=${req.query.banner_sort} WHERE banner_id=${req.query.id}`;
  db.query(sql, (err, results) => {
    if (err) {
      return res.send({ code: 0, msg: err.message });
    }
    if (results.affectedRows == 1) {
      // 影响一行  说明修改成功
      return res.send({ code: 1, msg: '修改成功' });
    } else {
      return res.send({ code: 0, msg: '修改失败' });
    }
  });
});
// 显示按钮路由
router.post('/changershow', (req, res) => {
  // console.log(req.body); //{ id: '50', banner_Show: '1' }
  var { id, banner_Show } = req.body;
  var sql = `UPDATE banner SET banner_show=${banner_Show} WHERE  banner_id=${id}`;
  db.query(sql, (err, results) => {
    if (err) return res.send({ code: 0, msg: '登录失败' });
    if (results.affectedRows == 1) {
      // 影响一行 修改成功
      return res.send({ code: 1, msg: '修改成功' });
    } else {
      return res.send({ code: 0, msg: '修改失败' });
    }
  });
});
// 修改按钮
// updateall
router.get('/updateall', (req, res) => {
  // console.log(req.query);
  var sql = `SELECT * FROM banner WHERE banner_id=${req.query.id}`;
  db.query(sql, (err, results) => {
    if (err) return res.send({ code: 0, msg: err.message });
    if (results.length == 0) {
      return res.send({ code: 0, msg: '查询失败' });
    } else {
      return res.send({ code: 1, msg: '查询成功', data: results });
    }
  });
});
// TODO:  修改提交事件
// 修改事件  提交事件
router.post('/updateall', (req, res) => {
  // console.log(req.body);
  var { banner_id, banner_name, banner_sort, banner_img, old_banner_img, banner_show } = req.body;
  banner_show = banner_show ? banner_show : '0';
  var sql = `UPDATE banner SET banner_name=?,banner_sort=?,banner_img=?,banner_show=? WHERE  banner_id=?`;
  db.query(sql, [banner_name, banner_sort, banner_img, banner_show, banner_id], (err, results) => {
    if (err) return res.send({ code: 0, msg: err.message });
    if (results.affectedRows == 1) {
      // return res.send({ code: 1, msg: '修改成功' });
      // 数据库更改了  现在去删除图片
      // TODO:
      fs.unlink(path.join(__dirname, '../../static', old_banner_img), err => {
        if (err) {
          // 文件删除失败
          return res.send({ code: 0, msg: `文件删除失败 ${err.message}` });
        } else {
          // 数据库删除成功 文件删除成功 删除成功
          return res.send({ code: 1, msg: '删除成功' });
        }
      });
    } else {
      return res.send({ code: 0, msg: '修改失败' });
    }
  });
});
module.exports = router;
